# encoding: utf-8
# @File   : logger.py
# @Author : 乖孩子
# @Date   : 2025/07/24 16:31:43

import logging
import os
from datetime import datetime


def setup_logger(name, log_dir="logs"):
    """创建按日期和时间分割的日志记录器"""
    # 创建日期子目录
    today = datetime.now().strftime("%Y-%m-%d")
    log_subdir = os.path.join(log_dir, today)
    os.makedirs(log_subdir, exist_ok=True)

    # 按时间命名日志文件
    current_time = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    log_file = os.path.join(log_subdir, f"{current_time}.log")

    # 创建日志记录器
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)

    # 确保不重复添加处理器
    if not logger.handlers:
        # 创建文件处理器
        file_handler = logging.FileHandler(log_file, encoding='utf-8')
        file_handler.setLevel(logging.INFO)

        # 创建格式化器并添加到处理器
        formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(formatter)

        # 添加处理器到日志记录器
        logger.addHandler(file_handler)

    return logger


class LogCollector:
    """收集日志信息，用于在UI中显示"""

    def __init__(self):
        self.logs = []

    def add_log(self, message, level="INFO"):
        self.logs.append(f"{level}: {message}")

    def get_logs(self):
        return "\n".join(self.logs)

    def clear(self):
        self.logs = []